package com.mit.facade;

import com.mit.common.RequestContext;
import com.mit.common.ResultContext;
import com.mit.common.exception.BaseException;
import com.mit.common.exception.NoRecordUpdateException;

public interface IMaintenanceFacade {
	ResultContext retrieveProductTypes(RequestContext rqs);
	ResultContext updateProductTypes(RequestContext rqs)  throws NoRecordUpdateException;
	
	ResultContext retrieveSeasons(RequestContext rqs);
	
	ResultContext createEmployee(RequestContext rqs) throws BaseException;
//	ResultContext retrieveEmployeeByDepId(RequestContext rqs);
//	ResultContext retrieveAllEmployees(RequestContext rqs);
	ResultContext retrieveEmployees(RequestContext requestCtx) ;
	ResultContext retrieveActiveEmployees(RequestContext requestCtx);
	ResultContext retrieveEmployeeById(RequestContext requestCtx);
	ResultContext deleteEmployee(RequestContext requestCtx);
	ResultContext updateEmployee(RequestContext rqs) throws BaseException;
	ResultContext retrieveEmployeeCount(RequestContext requestCtx) ;
	/**
	 * Search employees with employee code, department id in the specified page. 
	 * @param rqs
	 * @return List of EmployeeDTO saved in the ResultContext
	 */
	//ResultContext retrievePagedEmployees(RequestContext rqs);
	
	/**
	 * Retrieve row count by searching employee with employee code, department code.
	 * It always associates with retrievePagedEmployees to implement the pagination.
	 * @param rqs
	 * @return
	 */
	//ResultContext retrieveEmployeesRecordCount(RequestContext rqs);	
	
	/** Product Color Maintenance */
	ResultContext retrieveProductColors(RequestContext requestCtx);
	ResultContext updateProductColors(RequestContext requestCtx)  throws NoRecordUpdateException;
	
	/** Unit Maintenance */
	ResultContext retrieveUnits(RequestContext requestCtx);
	ResultContext updateUnits(RequestContext requestCtx)  throws NoRecordUpdateException;
	
	/** Payment Maintenance */
	ResultContext retrievePayments(RequestContext requestCtx);
	ResultContext updatePayments(RequestContext requestCtx)  throws NoRecordUpdateException;
	
	/** Fabric Category Maintenance */
	ResultContext retrieveFabricCats(RequestContext requestCtx);
	ResultContext updateFabricCats(RequestContext requestCtx)  throws NoRecordUpdateException;
	
	ResultContext retrieveOrganization(RequestContext requestCtx);
	
	ResultContext updateOrganization(RequestContext rqs) throws NoRecordUpdateException;
}
